{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "5d12fa6c-0bb7-4157-abad-b4ecb1f92cee",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Linear模型的预测准确率为：0.78363\n",
      "Ridge模型的预测准确率为：0.78905\n",
      "Lasso模型的预测准确率为：0.66948\n",
      "Linear模型的最大预测准确率为：0.78363\n",
      "Ridge模型的最大预测准确率为：0.78905\n",
      "Lasso模型的最大预测准确率为：0.78573\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0MAAAJbCAYAAAAmMk+tAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAeYBJREFUeJzt3XlcVPX+x/H3MMDgArgDKiqaC4JLwhXFrdIoLMtWl8LcfjfLbi63RdKyLOXq7Zr+MigLM8vKblppYkVZLlk3Ja00c0kTVIhwAVdQOL8//DG3CTRRhjPMvJ6Px3nofOd7zvkcuneOb77f+R6LYRiGAAAAAMDDeJldAAAAAACYgTAEAAAAwCMRhgAAAAB4JMIQAAAAAI9EGAIAAADgkQhDAAAAADwSYQgAAACARyIMAQAAAPBIhCEAAAAAHokwBFykhQsXymKxaNOmTeW+/8svv8hisWjhwoVVWxgAwKOV3p9KN29vb4WEhGjw4MHatWuXQ9+rrrpKV1111Z8ek3saPIW32QUA7iIkJERfffWVWrVqZXYpAAAP9Oqrr6pdu3Y6ffq0vvzyS02fPl2ff/65fvrpJ9WtW1eSlJycbHKVgGshDAGVxGazqVu3bmaXcUEnT55UzZo1zS4DAOAEkZGRio6OlnRuBKi4uFhTp07V+++/rxEjRkiS2rdvb2aJgMthmhxQScqbUvDkk0/KYrFo27ZtGjJkiAIDAxUUFKSRI0cqPz/fYX/DMJScnKzOnTurRo0aqlu3rm6//Xbt2bPHoV96erpuvvlmNW3aVH5+frriiit07733Ki8vz6Ff6bm//fZb3X777apbty6jVgDgQUqD0a+//mpvK2+a3MGDB3XnnXfK399fgYGBGjRokHJycso95ssvv6w2bdrIZrOpffv2evPNNzV8+HC1aNHCoV9RUZGeeeYZtWvXTjabTQ0bNtSIESP022+/Veo1ApeLkSGgCtx2220aNGiQRo0apR9++EGJiYmSpAULFtj73HvvvVq4cKEefPBBzZw5U4cPH9a0adMUGxur7777TkFBQZKkn3/+Wd27d9fo0aMVGBioX375RbNnz1bPnj31ww8/yMfHx+Hct956qwYPHqwxY8boxIkTVXfRAABT7d27V5LUpk2b8/Y5deqU+vXrp4MHDyopKUlt2rTRypUrNWjQoDJ958+fr3vvvVe33XabnnvuOeXn5+upp55SYWGhQ7+SkhLdfPPNWrdunR555BHFxsZq3759mjp1qq666ipt2rRJNWrUqNyLBS4RYQioAqNGjdLDDz8sSerXr592796tBQsWKDU1VRaLRV9//bVefvll/etf/9LEiRPt+/Xq1Utt2rTR7NmzNXPmTEnSmDFj7O8bhqHY2FhdddVVat68uVatWqWbbrrJ4dz33HOPnnrqqSq4SgCAmYqLi3X27Fn7d4aeeeYZ9e7du8x94fdee+01bd++XR988IG9X1xcnE6dOqWXX37Z3q+kpERTp05VTEyM3n33XXt7z549dcUVV6hx48b2tnfeeUcfffSRli5dqltvvdXe3qlTJ/3lL3/RwoULdd9991XmpQOXjGlyQBX4442oY8eOOn36tHJzcyVJH374oSwWi+6++26dPXvWvgUHB6tTp0764osv7Pvm5uZqzJgxCg0Nlbe3t3x8fNS8eXNJ0vbt28uc+7bbbnPehQEAXEa3bt3k4+Mjf39/XX/99apbt64++OADeXuf/3ffn3/+ufz9/cvcp4YOHerweseOHcrJydGdd97p0N6sWTP16NHDoe3DDz9UnTp1NGDAAId7WufOnRUcHOxwTwPMxsgQUAXq16/v8Npms0k6Nz1BOjef2zAM+1S4P2rZsqWkc7+Zi4uL08GDB/X444+rQ4cOqlWrlkpKStStWzf78X4vJCSkMi8FAOCiFi1apPDwcB07dkxLlizRSy+9pCFDhmjVqlXn3efQoUPl3nuCg4PL9JNUbt+goCD7lDzp3D3t6NGj8vX1Lfecf/yOK2AmwhDgAho0aCCLxaJ169bZg9LvlbZt3bpV3333nRYuXKh77rnH/v7u3bvPe2yLxVL5BQMAXE54eLh90YSrr75axcXFeuWVV/Tuu+/q9ttvL3ef+vXr65tvvinT/scFFEp/qff7xRjO17dBgwaqX7++Pvroo3LP6e/v/+cXA1QRpskBLuDGG2+UYRg6cOCAoqOjy2wdOnSQ9N9g88fA9NJLL1V5zQAA1zZr1izVrVtXTzzxhEpKSsrtc/XVV+vYsWNavny5Q/ubb77p8Lpt27YKDg7WO++849CemZmpDRs2OLTdeOONOnTokIqLi8u9p7Vt27YSrg6oHIwMARW0evVq/fLLL2XaL+fZDT169NBf//pXjRgxQps2bVLv3r1Vq1YtZWdna/369erQoYPuu+8+tWvXTq1atdKkSZNkGIbq1aunFStWKD09/TKuCADgjurWravExEQ98sgjevPNN3X33XeX6TNs2DA999xzGjZsmKZPn67WrVsrLS1NH3/8sUM/Ly8vPfXUU7r33nt1++23a+TIkTp69KieeuophYSEyMvrv79fHzx4sBYvXqz+/ftr3Lhx6tq1q3x8fLR//359/vnnuvnmm3XLLbc4/fqBi0EYAiro0UcfLbf99/OlL8VLL72kbt266aWXXlJycrJKSkrUuHFj9ejRQ127dpUk+fj4aMWKFRo3bpzuvfdeeXt7q1+/fvr000/VrFmzyzo/AMD9/O1vf9O8efM0bdo0DRkypMz7NWvW1OrVqzVu3DhNmjRJFotFcXFxevvttxUbG+vQ969//assFotmzZqlW265RS1atNCkSZP0wQcfKDMz097ParVq+fLlmjt3rl5//XUlJSXJ29tbTZs2VZ8+feyzHQBXYDEMwzC7CAAAAFQ/R48eVZs2bTRw4EDNnz/f7HKACmNkCAAAAH8qJydH06dP19VXX6369etr3759eu6553Ts2DGNGzfO7PKAS0IYAgAAwJ+y2Wz65ZdfdP/99+vw4cOqWbOmunXrphdffFERERFmlwdcEqbJAQAAAPBILK0NAAAAwCMRhgAAAAB4JMIQAAAAAI/kNgsolJSU6ODBg/L395fFYjG7HADwGIZh6NixY2rcuLHDgxcrU3Jysv75z38qOztbERERmjNnjnr16lVu3+HDh+u1114r096+fXtt27ZNknTmzBklJSXptdde04EDB9S2bVvNnDlT119//SWf94+4LwGAeS763mS4iaysLEMSGxsbG5tJW1ZWllM+399++23Dx8fHePnll40ff/zRGDdunFGrVi1j37595fY/evSokZ2dbd+ysrKMevXqGVOnTrX3eeSRR4zGjRsbK1euNH7++WcjOTnZ8PPzM7799ttLPu8fcV9iY2NjM3/7s3uT26wml5+frzp16igrK0sBAQFmlwMAHqOgoEChoaE6evSoAgMDK/34MTEx6tKli1JSUuxt4eHhGjhwoJKSkv50//fff1+33nqr9u7dq+bNm0uSGjdurMmTJ2vs2LH2fgMHDlTt2rX1xhtvVMp5uS8BgHku9t7kNtPkSqcgBAQEcNMBABM4YypYUVGRMjIyNGnSJIf2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cYojR46oR48e8vHx0apVq/Tjjz/qX//6l+rUqWN2aZVq5syZevHFFzVv3jxt375ds2bN0j//+U89//zzZpd22U6cOKFOnTpp3rx55b4/a9YszZ49W/PmzdPGjRsVHBysa6+9VseOHaviSmEGT7g3edp9SeLe5C7c9d7ksfclw8N17drVGDNmjENbu3btjEmTJplUUdXIzc01JBlr1qwxu5RKd+zYMaN169ZGenq60adPH2PcuHFml1TpHn30UaNnz55ml+F0N9xwgzFy5EiHtltvvdW4++67TarIOSQZ7733nv11SUmJERwcbPzjH/+wt50+fdoIDAw0XnzxRRMqRFXzxHuTO9+XDIN7kzvxhHuTJ92XPHpkqKioSBkZGYqLi3Noj4uL04YNG0yqqmrk5+dLkurVq2dyJZVv7NixuuGGG9SvXz+zS3Ga5cuXKzo6WnfccYcaNWqkK6+8Ui+//LLZZVW6nj176rPPPtPOnTslSd99953Wr1+v/v37m1yZc+3du1c5OTkOn002m019+vRx+88meO69yZ3vSxL3Jnfiifcmd74veZtdgJny8vJUXFysoKAgh/agoCDl5OSYVJXzGYahiRMnqmfPnoqMjDS7nEr19ttv69tvv9XGjRvNLsWp9uzZo5SUFE2cOFGPPfaYvvnmGz344IOy2WwaNmyY2eVVmkcffVT5+flq166drFariouLNX36dA0ZMsTs0pyq9POnvM+mffv2mVESqpAn3pvc+b4kcW/i3lT9ufN9yaPDUCmLxeLw2jCMMm3u5IEHHtD333+v9evXm11KpcrKytK4ceP0ySefyM/Pz+xynKqkpETR0dGaMWOGJOnKK6/Utm3blJKS4lY3nCVLluiNN97Qm2++qYiICG3ZskXjx49X48aNdc8995hdntN52mcTHHnSf393vS9J3Ju4N7kXd/xc8ugw1KBBA1mt1jK/acvNzS2TfN3F3/72Ny1fvlxr165V06ZNzS6nUmVkZCg3N1dRUVH2tuLiYq1du1bz5s1TYWGhrFariRVWnpCQELVv396hLTw8XEuXLjWpIud4+OGHNWnSJA0ePFiS1KFDB+3bt09JSUlufcMJDg6WdO43cSEhIfZ2d/5swn952r3Jne9LEvcm7k3uwZ3vSx79nSFfX19FRUUpPT3doT09PV2xsbEmVeUchmHogQce0LJly7R69WqFhYWZXVKl69u3r3744Qdt2bLFvkVHR+uuu+7Sli1b3OZmI0k9evQoswTtzp071bx5c5Mqco6TJ0/Ky8vxY8pqtVb75Uv/TFhYmIKDgx0+m4qKirRmzRq3+2xCWZ5yb/KE+5LEvYl7k3tw5/uSR48MSdLEiROVkJCg6Ohode/eXfPnz1dmZqbGjBljdmmVauzYsXrzzTf1wQcfyN/f3/4bx8DAQNWoUcPk6iqHv79/mbnmtWrVUv369d1uDvqECRMUGxurGTNm6M4779Q333yj+fPna/78+WaXVqkGDBig6dOnq1mzZoqIiNDmzZs1e/ZsjRw50uzSLtvx48e1e/du++u9e/dqy5Ytqlevnpo1a6bx48drxowZat26tVq3bq0ZM2aoZs2aGjp0qIlVo6p4wr3JE+5LEvcm7k3Vh8fel8xbyM51vPDCC0bz5s0NX19fo0uXLm65rKekcrdXX33V7NKcyl2XLzUMw1ixYoURGRlp2Gw2o127dsb8+fPNLqnSFRQUGOPGjTOaNWtm+Pn5GS1btjQmT55sFBYWml3aZfv888/L/f/kPffcYxjGuWVMp06dagQHBxs2m83o3bu38cMPP5hbNKqUu9+bPPW+ZBjcm6o7d703eep9yWIYhlGV4QsAAAAAXIFHf2cIAAAAgOciDAEAAADwSIQhAAAAAB6JMAQAAADAIxGGAAAAAHgkwhAAAAAAj0QYAgAAAOCRCENABS1cuFAWi0WbNm0yuxQAAABcBsIQAAAAAI9EGAIAAADgkQhDQCU7ffq0/v73v6tz584KDAxUvXr11L17d33wwQdl+v773/9WTEyMAgMDVbNmTbVs2VIjR460v19SUqJnnnlGbdu2VY0aNVSnTh117NhRc+fOdTjO+vXr1bdvX/n7+6tmzZqKjY3VypUrnX6tAAAA1Zm32QUA7qawsFCHDx/WQw89pCZNmqioqEiffvqpbr31Vr366qsaNmyYJOmrr77SoEGDNGjQID355JPy8/PTvn37tHr1avuxZs2apSeffFJTpkxR7969debMGf300086evSovc+aNWt07bXXqmPHjkpNTZXNZlNycrIGDBigt956S4MGDarqHwEAAEC1YDEMwzC7CKA6WbhwoUaMGKGNGzcqOjr6T/sXFxfLMAyNGTNG3377rb799ltJ0r/+9S899NBDOnr0qAIDA8vdd8CAAdq/f782b9583uN3795de/bs0c8//6zatWvbz9m5c2cdPXpUmZmZslgsl3ClAAAA7o1pcoAT/Pvf/1aPHj1Uu3ZteXt7y8fHR6mpqdq+fbu9z1/+8hdJ0p133ql33nlHBw4cKHOcrl276rvvvtP999+vjz/+WAUFBQ7vnzhxQv/5z390++2324OQJFmtViUkJGj//v3asWOHk64SAACgeiMMAZVs2bJluvPOO9WkSRO98cYb+uqrr7Rx40aNHDlSp0+ftvfr3bu33n//fZ09e1bDhg1T06ZNFRkZqbfeesveJzExUc8++6y+/vprxcfHq379+urbt699We8jR47IMAyFhISUqaNx48aSpEOHDjn5igEAAKonwhBQyd544w2FhYVpyZIlGjhwoLp166bo6GgVFhaW6XvzzTfrs88+U35+vr744gs1bdpUQ4cO1VdffSVJ8vb21sSJE/Xtt9/q8OHDeuutt5SVlaXrrrtOJ0+eVN26deXl5aXs7Owyxz548KAkqUGDBs69YAAAgGqKMARUMovFIl9fX4fv6eTk5JS7mlwpm82mPn36aObMmZJU7neE6tSpo9tvv11jx47V4cOH9csvv6hWrVqKiYnRsmXLdOrUKXvfkpISvfHGG2ratKnatGlTiVcHAADgPlhNDrhEq1ev1i+//FKm/ZprrtGyZct0//336/bbb1dWVpaefvpphYSEaNeuXfZ+TzzxhPbv36++ffuqadOmOnr0qObOnSsfHx/16dNH0rkFFCIjIxUdHa2GDRtq3759mjNnjpo3b67WrVtLkpKSknTttdfq6quv1kMPPSRfX18lJydr69ateuutt1g8AQAA4DwIQ8AlevTRR8tt37t3r44fP64XX3xRCxYsUMuWLTVp0iTt379fTz31lL1fTEyMNm3apEcffVS//fab6tSpo+joaK1evVoRERGSpKuvvlpLly7VK6+8ooKCAgUHB+vaa6/V448/Lh8fH0lSnz59tHr1ak2dOlXDhw9XSUmJOnXqpOXLl+vGG290/g8CAACgmmJpbQAAAAAeie8MAQAAAPBIhCEAAAAAHokwBAAAAMAjEYYAAAAAeCTCEAAAAACPRBgCAAAA4JHc5jlDJSUlOnjwoPz9/XnIJABUIcMwdOzYMTVu3FheXvyODQBQfbhNGDp48KBCQ0PNLgMAPFZWVpaaNm1q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qylTpigsLEw1atRQy5YtNW3aNJWUlJhd2mVbu3atBgwYoMaNG8tisej99993eN8wDD355JNq3LixatSooauuukrbtm0zp1gAANyUx4ehJUuWaPz48Zo8ebI2b96sXr16KT4+XpmZmWaXVqnWrFmjsWPH6uuvv1Z6errOnj2ruLg4nThxwuzSnGLjxo2aP3++OnbsaHYpTnHkyBH16NFDPj4+WrVqlX788Uf961//Up06dcwurVLNnDlTL774oubNm6ft27dr1qxZ+uc//6nnn3/e7NIu24kTJ9SpUyfNmzev3PdnzZql2bNna968edq4caOCg4N17bXX6tixY1VcKQAA7svjl9aOiYlRly5dlJKSYm8LDw/XwIEDlZSUZGJlzvXbb7+pUaNGWrNmjXr37m12OZXq+PHj6tKli5KTk/XMM8+oc+fOmjNnjtllVapJkybpyy+/dMtRzN+78cYbFRQUpNTUVHvbbbfdppo1a+r11183sbLKZbFY9N5772ngwIGSzo0KNW7cWOPHj9ejjz4qSSosLFRQUJBmzpype++918RqAQBwHx49MlRUVKSMjAzFxcU5tMfFxWnDhg0mVVU18vPzJUn16tUzuZLKN3bsWN1www3q16+f2aU4zfLlyxUdHa077rhDjRo10pVXXqmXX37Z7LIqXc+ePfXZZ59p586dkqTvvvtO69evV//+/U2uzLn27t2rnJwch88mm82mPn36uP1nEwAAVcnb7ALMlJeXp+LiYgUFBTm0BwUFKScnx6SqnM8wDE2cOFE9e/ZUZGSk2eVUqrffflvffvutNm7caHYpTrVnzx6lpKRo4sSJeuyxx/TNN9/owQcflM1m07Bhw8wur9I8+uijys/PV7t27WS1WlVcXKzp06dryJAhZpfmVKWfP+V9Nu3bt8+MkgAAcEseHYZKWSwWh9eGYZRpcycPPPCAvv/+e61fv97sUipVVlaWxo0bp08++UR+fn5ml+NUJSUlio6O1owZMyRJV155pbZt26aUlBS3CkNLlizRG2+8oTfffFMRERHasmWLxo8fr8aNG+uee+4xuzyn87TPJgAAqppHh6EGDRrIarWWGQXKzc0t8xtZd/G3v/1Ny5cv19q1a9W0aVOzy6lUGRkZys3NVVRUlL2tuLhYa9eu1bx581RYWCir1WpihZUnJCRE7du3d2gLDw/X0qVLTarIOR5++GFNmjRJgwcPliR16NBB+/btU1JSkluHoeDgYEnnRohCQkLs7e782QQAgBk8+jtDvr6+ioqKUnp6ukN7enq6YmNjTarKOQzD0AMPPKBly5Zp9erVCgsLM7ukSte3b1/98MMP2rJli32Ljo7WXXfdpS1btrhNEJKkHj16lFkafefOnWrevLlJFTnHyZMn5eXl+DFltVrdYmntCwkLC1NwcLDDZ1NRUZHWrFnjdp9NAACYyaNHhiRp4sSJSkhIUHR0tLp376758+crMzNTY8aMMbu0SjV27Fi9+eab+uCDD+Tv728fDQsMDFSNGjVMrq5y+Pv7l/kOVK1atVS/fn23+27UhAkTFBsbqxkzZujOO+/UN998o/nz52v+/Plml1apBgwYoOnTp6tZs2aKiIjQ5s2bNXv2bI0cOdLs0i7b8ePHtXv3bvvrvXv3asuWLapXr56aNWum8ePHa8aMGWrdurVat26tGTNmqGbNmho6dKiJVQMA4GYMGC+88ILRvHlzw9fX1+jSpYuxZs0as0uqdJLK3V599VWzS3OqPn36GOPGjTO7DKdYsWKFERkZadhsNqNdu3bG/PnzzS6p0hUUFBjjxo0zmjVrZvj5+RktW7Y0Jk+ebBQWFppd2mX7/PPPy/3/5D333GMYhmGUlJQYU6dONYKDgw2bzWb07t3b+OGHH8wtGgAAN+PxzxkCAAAA4Jk8+jtDAAAAADwXYQgAAACARyIMAQAAAPBIhCEAAAAAHokwBAAAAMAjEYYAAAAAeCTCEAAAAACPRBgCAAAA4JEIQwAAAAA8EmEIAAAAgEciDAEAAADwSIQhAAAAAB7p/wCxiY9veBl4IwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x700 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.linear_model import LinearRegression,Ridge,Lasso\n",
    "from sklearn.model_selection import train_test_split\n",
    "import matplotlib.pyplot as plt\n",
    "data_url=\"http://lib.stat.cmu.edu/datasets/boston\"\n",
    "raw_df=pd.read_csv(data_url,sep=\"\\s+\",skiprows=22,header=None)\n",
    "data=np.hstack([raw_df.values[::2,:],raw_df.values[1::2,:2]])\n",
    "target=raw_df.values[1::2,2]\n",
    "x,y=data,target\n",
    "x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=1,test_size=0.3)\n",
    "lr=LinearRegression()\n",
    "rd=Ridge()\n",
    "ls=Lasso()\n",
    "models=[lr,rd,ls]\n",
    "names=['Linear','Ridge','Lasso']\n",
    "for model,name in zip(models,names):\n",
    "    model.fit(x_train,y_train)\n",
    "    score=model.score(x_test,y_test)\n",
    "    print(\"%s模型的预测准确率为：%.5f\"%(name,score))\n",
    "scores=[]\n",
    "alphas=[0.0001,0.0005,0.001,0.005,0.01,0.05,0.1,0.5,1,5,10,50]\n",
    "for index,model in enumerate(models):\n",
    "    scores.append([])\n",
    "    for alpha in alphas:\n",
    "        if index>0:\n",
    "            model.alpha=alpha\n",
    "        model.fit(x_train,y_train)\n",
    "        scores[index].append(model.score(x_test,y_test))\n",
    "fig=plt.figure(figsize=(10,7))\n",
    "for i,name in enumerate(names):\n",
    "    plt.subplot(2,2,i+1)\n",
    "    plt.plot(range(len(alphas)),scores[i],'g-')\n",
    "    plt.title(name)\n",
    "    print(\"%s模型的最大预测准确率为：%.5f\"%(name,max(scores[i])))\n",
    "plt.show()\n",
    "             \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8be87841-60f1-4457-9652-2e8ebafba51d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:base] *",
   "language": "python",
   "name": "conda-base-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
